var CanvasCommand = (function() {
	var canvas = document.getElementById('canvas'),
		ctx = canvas.getContext('2d');
	// 内部方法对象
	var Action = {
		// 填充色彩
		fillStyle(c) {
			ctx.fillStyle = c;
		},
		// 填充矩形
		fillRect(x, y, w, h) {
			ctx.fillRect(x, y, w, h);
		},
		// 描边色彩
		strokeStyle(c) {
			ctx.strokeStyle = c;
		},
		// 填充字体
		fillText(text, x, y) {
			ctx.fillText(text, x, y);
		},
		// 开启路径
		beginPath() {
			ctx.beginPath();
		},
		// 移动画笔触点
		moveTo(x, y) {
			ctx.moveTo(x, y);
		},
		// 画笔连线
		lineTo(x, y) {
			ctx.lineTo(x, y);
		},
		// 绘制弧线
		arc(x, y, r, begin, end, dir) {
			ctx.arc(x, y, r, begin, end, dir);
		},
		// 填充
		fill() {
			ctx.fill();
		},
		// 描边
		stroke() {
			ctx.stroke();
		}
	};
	return {
		// 命令接口
		execute: function(msg) {
			// 如果没有指令返回
			if(!msg) return;
			// 如果命令是一个数组
			if(msg.length) {
				// 遍历执行多个命令
				for (var i = 0, len = msg.length; i < len; i++) {
					arguments.callee(msg[i]);
				}
			// 执行一个命令
			} else {
				msg.param = Object.prototype.toString.call(msg.param) === '[object Array]' ? msg.param : [msg.param];
				Action[msg.command].apply(Action, msg.param);
			}
		}
	}
}());
